#pragma once

namespace LuaPlus{class LuaState;}

struct I_LBCLuaPlugin
{
	virtual ~I_LBCLuaPlugin() = 0;
	virtual void Release() = 0;

	virtual BOOL Init() = 0;
	virtual BOOL Register(LuaPlus::LuaState* pState) = 0;
	virtual void UnRegister(LuaPlus::LuaState* pState) = 0;
};

/*
I_LBCLuaPluginMgr::~I_LBCLuaPluginMgr() {}

class LBCPluginMgrImpl : public I_LBCLuaPluginMgr
{
	LBCPluginMgrImpl()
	{

	}

public:
	static LBCPluginMgrImpl* Create()
	{
		return new LBCPluginMgrImpl;
	}

	virtual void Release()
	{
		delete this;
	}
	
	virtual BOOL Init()
	{
		return TRUE;
	}
	virtual BOOL Register(LuaState* pState)
	{
		pState->GetGlobals().RegisterObjectDirect("Reg", this, &LBCPluginMgrImpl::Init);
		return FALSE;
	}
	virtual void UnRegister(LuaState* pState)
	{

	}
};

*/